Package de.yaams.extensions.basemap

Source Code of de.yaams.extensions.basemap.BaseMapPlugin

/**
*
*/
package de.yaams.extensions.basemap;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;

import javax.swing.JFileChooser;

import de.yaams.extensions.basemap.tiled.core.Map;
import de.yaams.extensions.basemap.tiled.io.MapHelper;
import de.yaams.extensions.basemap.tiled.io.MapWriter;
import de.yaams.extensions.basemap.tiled.mapeditor.util.TiledFileFilter;
import de.yaams.extensions.basemap.tiled.plugins.json.JSONMapWriter;
import de.yaams.extensions.basemap.tiled.plugins.lua.LuaMapWriter;
import de.yaams.extensions.basemap.tiled.plugins.mappy.MappyMapWriter;
import de.yaams.extensions.basemap.tiled.plugins.tmw.TMWServerMapWriter;
import de.yaams.maker.helper.extensions.ExtentionManagement;
import de.yaams.maker.helper.extensions.IExtension;
import de.yaams.maker.helper.gui.YEx;
import de.yaams.maker.helper.gui.YMessagesDialog;
import de.yaams.maker.helper.gui.icons.IconCache;
import de.yaams.maker.programm.plugins.BasePlugin;

/**
* @author Nebli
*
*/
public class BaseMapPlugin extends BasePlugin {

  private static ArrayList<MapWriter> plugs;

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.maker.programm.plugins.core.BasePlugin#start()
   */
  @Override
  public void start() {
    // add icon
    IconCache.addPNG(BaseMapPlugin.class, "map");

    // fill plugin array
    plugs = new ArrayList<MapWriter>();
    plugs.add(new JSONMapWriter());
    plugs.add(new LuaMapWriter());
    plugs.add(new MappyMapWriter());
    plugs.add(new TMWServerMapWriter());

    // register extenstions
    ExtentionManagement.add(MapHelper.SAVE, new IExtension() {

      @Override
      public void work(HashMap<String, Object> objects) {

        File file = (File) objects.get("file");
        Map map = (Map) objects.get("map");

        // check all types
        for (MapWriter m : plugs) {
          if (objects.containsKey("saved")) {
            break;
          }
          if (m.accept(file)) {
            try {
              m.writeMap(map, file);
              objects.put("saved", true);
            } catch (Exception e) {
              YEx.info("Can not save " + map + " under " + file, e);
            }
          }
        }
      }
    });

    // register extenstions
    ExtentionManagement.add(MapHelper.FILEXT, new IExtension() {

      @Override
      public void work(HashMap<String, Object> objects) {
        JFileChooser chooser = (JFileChooser) objects.get("chooser");

        // check all types
        for (MapWriter m : plugs) {
          try {
            chooser.addChoosableFileFilter(new TiledFileFilter(m.getFilter(), m.getName()));
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      }
    });
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.maker.programm.plugins.core.BasePlugin#useable(de.yaams.maker
   * .helper.gui.YMessagesDialog)
   */
  @Override
  public boolean useable(YMessagesDialog md) {
    return isVersionInstall(null, 0.0053, -1, md);
  }

  /**
   * @return the plugs
   */
  public static ArrayList<MapWriter> getPlugs() {
    return plugs;
  }

}
TOP

Related Classes of de.yaams.extensions.basemap.BaseMapPlugin

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.